/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package info.toegepaste.www.dataaccess;

import info.toegepaste.www.beans.Bedrijf;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Logic
 */
public class DABedrijf {
    private Connection connection = null;

    public DABedrijf(String url, String login, String password) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection(url, login, password);
    }

    public DABedrijf(Connection conn) {
        connection = conn;
    }
    
    public void close() throws SQLException {
        if (connection != null) {
            connection.close();
        }
    }
    
    public Bedrijf getBedrijf(int id) {
        Bedrijf bedrijf = new Bedrijf();
        PreparedStatement statement = null;
        ResultSet resultSet = null;

        try {
            statement = connection.prepareStatement("SELECT  * FROM bedrijf where bedrijfID = ?");
            statement.setInt(1, id);
            resultSet = statement.executeQuery();
            if (resultSet.next()) {
                bedrijf.setBedrijfID(resultSet.getInt("bedrijfID"));
                bedrijf.setNaam(resultSet.getString("naam"));
                bedrijf.setPostcode(resultSet.getString("postcode"));
                bedrijf.setGemeente(resultSet.getString("gemeente"));
                bedrijf.setWebsite(resultSet.getString("website"));
            } 
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                statement.close();
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
            }
        }
        return bedrijf;
    }
    public ArrayList<String> getTop3Bedrijven(){
        ArrayList<String> bedrijven = new ArrayList<String>();
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try{
        statement = connection.prepareStatement("SELECT naam,"
                + "(SELECT COUNT(*) FROM bedrijf b2 INNER JOIN alumnus ON b2.`bedrijfID` = alumnus.`bedrijfID` WHERE b2.`bedrijfID` = b1.bedrijfID)"
                + "FROM bedrijf b1 "
                + "ORDER BY 2 DESC "
                + "LIMIT 3");
        resultSet = statement.executeQuery();
            while (resultSet.next()) {            
                bedrijven.add(resultSet.getString(1));
            }
        } catch(Exception e){
            e.printStackTrace();;
        } finally {
            try {
                statement.close();
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
            }
        }
        return bedrijven;
    }
    public ArrayList<Bedrijf> getAlleBedrijven() {
        ArrayList<Bedrijf> resultaat = new ArrayList<Bedrijf>();
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            statement = connection.prepareStatement("select * from bedrijf");
            resultSet = statement.executeQuery();
            while (resultSet.next()) {
                Bedrijf bedrijf = new Bedrijf();
                bedrijf.setBedrijfID(resultSet.getInt("bedrijfID"));
                bedrijf.setNaam(resultSet.getString("naam"));
                bedrijf.setPostcode(resultSet.getString("postcode"));
                bedrijf.setGemeente(resultSet.getString("gemeente"));
                bedrijf.setWebsite(resultSet.getString("website"));
                
                resultaat.add(bedrijf);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                statement.close();
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
            }
        }
        return resultaat;
    }
    
    public boolean insertBedrijf(String naam, String postcode, String gemeente, String website) {
        boolean resultaat = true;
        PreparedStatement statement = null;
        try {
            statement = connection.prepareStatement("insert into bedrijf(naam,postcode,gemeente,website) values(?, ?, ?, ?)");
            statement.setString(1, naam);
            statement.setString(2, postcode);
            statement.setString(3, gemeente);
            statement.setString(4, website);
            statement.executeUpdate();
            
        } catch (Exception e) {
            resultaat = false;
            e.printStackTrace();
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException e) {
            }
        }
        return resultaat;
    }
}
